課程資訊
課程名稱
編譯程式設計
Compiler Design 
開課學期
103-1 
授課對象
電機資訊學院  資訊工程學系  
授課教師
徐慰中 
課號
CSIE3230 
課程識別碼
902 39200 
班次
 
學分
全/半年
半年 
必/選修
選修 
上課時間
星期四6,7,8(13:20~16:20) 
上課地點
資107 
備註
限電資學院學生(含輔系、雙修生) 且 限學士班三年級以上
總人數上限:40人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1031CSIE3230_compile 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

Overview
Design of a simple compiler
Theory and practice of Scanning
Formal grammars and parsing
Top-down parsing
Bottom-up parsing
Syntax-directed compilation
Declaration processing and Symbol tables
Semantic analysis
Code generation
Program analysis and Optimization
 

課程目標
This course is an introduction to compiler design and development. Its focus is on the process and
techniques in constructing a compiler, including lexical analysis, parsing, symbol table manipulation, and code generation. The theory, techniques and algorithms associated with a compiler can be applied to a wide range of problems in software design and development. The goal of this course is to provide students with the essential theory and techniques in building a simple yet complete compiler. 
課程要求
 
預期每週課後學習時數
 
Office Hours
 
指定閱讀
 
參考書目
A.V. Aho, M. Lam, R. Sethi, and J.D. Ullman
“Compilers: Principles, Techniques and Tools”
2nd edition, 2007
ISBN 0-321-48681-1
 
評量方式
(僅供參考)
   
課程進度
週次
日期
單元主題
Week 1
9/18  1) Course Organization
2) Chapter 1: Introduction 
Week 2
9/25  1) Chapter 1: Introduction
2) Chapter 2: A Simple Compiler 
Week 3
10/02  Chapter 2: A Simple Compiler 
Week 4
10/09  Chapter 3: Scanner 
Week 5
10/16  Chapter 3 and Quiz (1-3) 
Week 6
10/23  Chapter 4: Formal Grammar and Parsing 
Week 7
10/30  Chapter 5: Top-Down Parsing 
Week 8
11/06  Chapter 6: Bottom-Up Parsing

Chapter 7: Syntax Directed Translation

Quiz2 (Chapter 4-7) 
Week 9
11/13  Midterm Exam 
Week 10
11/20  Chapter 12: Runtime Support 
Week 11
11/27  Chapter 8: Declaration Processing and Symbol Table 
Week 12
12/04  Chapter 9: Semantic Analysis 
Week 13
12/11  Code Generation for ARM 
Week 14
12/18  Code Generation for Data Accesses and Simple Register Allocation 
Week 15
12/25  Code Generation for Control Structures 
Week 16
1/01  Holiday 
Week 17
1/08  Basic Code Optimizations: CSE, Register Allocation, Code Scheduling, Parallelization